//借助队列,//1像队列添加根节点，//2当队列不空，出队列的头节点。//3把队列头结点的子节点都存到队列，重复2

#include<iostream>
#include<vector>
#include<queue>

using namespace std;

const int N=1e5+10;
bool cmz[N];
vector<int> arr[N];//存树

void bfs()
{
	queue<int> q;
	q.push(1);
	cmz[1]=true;
	while(q.size())
	{
		int a=q.front();q.pop();
		cout<<a<<" ";
		for(auto b:arr[a])
		{
			if(!cmz[b])
			{
				q.push(b);
				cmz[b]=true;
			}
		}
	}
}
int main()
{
	int n;cin>>n;
	while(n--)
	{
		int a,b;cin>>a>>b;
		// a 和 b 之间有⼀条边
		arr[a].push_back(b);
		arr[b].push_back(a);
	}
	bfs();
	return 0;
}